# Create your views here.
from django.db.models import Q, Max, Min
from django.shortcuts import render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from django.template import Context, loader
from widpy.data.models import Pestanha, Tema
from django.contrib.auth.models import User
import datetime, string

def mostrar_pestanhas(request):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	#cluser =  Q(id__icontains=user_id)
	#if cluser:
	#	ituser = User.objects.filter(cluser).distinct()
	pesactual = 0
	des=0
	administ=0
	superadmin=0
	grupo = 0
	if(is_auth):
		cluser =  Q(user_id=user_id)
		ituser = user_groups.objects.filter(cluser)
		#tipouser = user_groups.objects.get(user_id=user_id)
		tipouser = User.objects.get(id=user_id)
		de = Q(groups__id='1') & Q(id=user_id)
		des = User.objects.filter(de)
		ad = Q(groups__id='2') & Q(id=user_id)
		administ = User.objects.filter(ad)
	
	#si el usuario esta autenticado:
	if(is_auth):
		clause =  Q(usuario__id__icontains=user_id)
		items = Pestanha.objects.filter(clause).order_by("id")
		b = Pestanha.objects.filter(usuario=user_id).count()
		pes = Q(usuario__id__icontains=user_id) & Q(estado__icontains=1)
		pesactual = Pestanha.objects.filter(pes).distinct()
		buscartema = Pestanha.objects.get(usuario__id__icontains=user_id, estado=1)
		p = Tema.objects.get(id=buscartema.tema_id)
		if(b <= 1):
			b=0
		
		if (des):
			grupo = grupo + 1
			des = 1
		else:
			des = 0
		if (administ):
			grupo = grupo + 1
			des = 0
			administ = 1
		else:
			administ = 0
		if (request.user.is_superuser):
			grupo = grupo + 1
			des = 0
			administ = 0
			superadmin = 1
		else:
			superadmin = 0
	#else:
	#	if "nro_pes" in request.COOKIES:
	#		cant_pes = request.COOKIES["nro_pes"]
	#		cpes = string.atoi(cant_pes,10)
	#		for i in range(cpes):
	#			Listapes.append(request.COOKIES["np"+str(i)])
	#	clause =  Q(usuario__id__icontains=1)
	#	items = Pestanha.objects.filter(clause).distinct()
	#	b = Pestanha.objects.filter(usuario=1).count()
	#	buscartema = Pestanha.objects.get(usuario__id__icontains=1, estado=1)
	#Para evitar que se muestre "borrar pestanha" cuando solo hay 1 pestanha
	
	if(is_auth):
		return render_to_response('webpage/inicio.html', 
		{'pes': items, 'cant_pes':b, 'user_id':user_id, 'is_auth':is_auth, 'tabactual' : buscartema.id, 'temaurl': p.url,
		'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username})
	return render_to_response('webpage/inicio.html', 
		{'user_id':user_id, 'is_auth':is_auth,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'cook': cookieval})
	
def add_pestanha(request):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	if(is_auth):
		if 'nombre_pes' in request.GET and request.GET['nombre_pes']:
			q = request.GET['nombre_pes']
			if(is_auth):
				idpest = Q(usuario=user_id) & Q(estado__exact=1)
				estadoviejo = Pestanha.objects.get(idpest)
				estadoviejo.estado = 0
				estadoviejo.save()
			valormaximo = Pestanha.objects.aggregate(Max('id'))
			valpesmax = valormaximo['id__max']
			valpesmax = valpesmax + 1
			pes_max = Pestanha.objects.filter(usuario=user_id)
			num_max = pes_max.count()
			num_max = num_max + 1
			newtab = Pestanha(id=valpesmax, usuario_id=user_id, tema_id=1, layout_id=1, nombre=q, estado=1, nro_orden=num_max)
			newtab.save()
	else:
		if 'nombre_pes' in request.GET and request.GET['nombre_pes']:
			if "nro_pes" in request.COOKIES:
				cant_pes = request.COOKIES["nro_pes"]
				cp = string.atoi(cant_pes,10)
				cp = cp + 1
				response = HttpResponseRedirect('/inicio/')
				response.set_cookie("nro_pes", cp, 365*24*60*60)
				response.set_cookie("np"+str(cp), request.GET['nombre_pes'], 365*24*60*60)
				#response.set_cookie("or_pes"+str(cp), str(cp), 365*24*60*60)
				response.set_cookie("pes_active", cp, 365*24*60*60)
				response.set_cookie("t"+str(cp), "/media/css/style.css", 365*24*60*60)
				response.set_cookie("nt"+str(cp), "1", 365*24*60*60)
				response.set_cookie("cantida_columna"+str(cp), 3, 365*24*60*60)
				response.set_cookie("modelo_columna"+str(cp), 1, 365*24*60*60)
				response.set_cookie("widxpest"+str(cp), "", 365*24*60*60)
				response.set_cookie("cantxwidxpest"+str(cp), 0, 365*24*60*60)
				#response.set_cookie(response, 'color_favorito', 'jujule')
				return response
				
			else:
				#No hay nada guardado
				cant_pes = 1
				response = HttpResponseRedirect('/inicio/')
				response.set_cookie("nro_pes", cant_pes, 365*24*60*60)
				response.set_cookie("np1", request.GET['nombre_pes'], 365*24*60*60)
				#response.set_cookie("or_pes1", "1", 365*24*60*60)
				response.set_cookie("pes_active", 1, 365*24*60*60)
				response.set_cookie("t1", "/media/css/style.css", 365*24*60*60)
				response.set_cookie("nt1", "/media/css/style.css", 365*24*60*60)
				#response.set_cookie(response, 'color_favorito', 'jujule')
				return response
				cookieval = "No tiene un color favorito."
				#return HttpResponse("No tiene un color favorito.")
			#if 'nombre_pes' in request.GET and request.GET['nombre_pes']:
			#	q = request.GET['nombre_pes']
			#	newtab = Pestanha(usuario_id=1, tema_id=1, layout_id=1,nombre=q, estado=1)
			#	newtab.save()
	return HttpResponseRedirect('/inicio/')

def cambiar_nombre_pes(request):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	nc = request.GET.get('nombre_pes_cam', '')
	idnc = request.GET.get('idpestanha', '')
	if(is_auth):
		nc = request.GET.get('nombre_pes_cam', '')
		idnc = request.GET.get('idpestanha', '')
		nuevorec = Pestanha.objects.get(id=idnc)
		nuevorec.nombre = nc
		nuevorec.save()
	else:
		if "nro_pes" in request.COOKIES:
			name_pes = request.COOKIES["np"+str(idnc)]
			#npes = string.atoi(name_pes,10)
			response = HttpResponseRedirect('/inicio/')
			#Nuevalista = []
			cant_pes = request.COOKIES["nro_pes"]
			cpes = string.atoi(cant_pes,10)
			#for i in range(1, cpes+1):
			#	if not (i == idnc):
			#		Nuevalista.append(request.COOKIES["np"+str(i)])
			response.delete_cookie("np"+str(idnc))
			response.set_cookie("np"+str(idnc), nc, 365*24*60*60)
			response.set_cookie("pes_active", idnc, 365*24*60*60)
			#guardar nuevo registro
			#cant_pes = request.COOKIES["nro_pes"]
			#response = HttpResponseRedirect('/inicio/')
			#response.set_cookie("nro_pes", cpes, 365*24*60*60)
			#for i in range(1, cpes+1):
			#	response.set_cookie("np"+str(i), Nuevalista[i], 365*24*60*60)
			#	response.set_cookie("pes_active", idnc, 365*24*60*60)
			return response
			#for i in range(1, cpes+1):
			#	Listapes.append(request.COOKIES["np"+str(i)])
			#	Listanumpes.append(request.COOKIES["np"+str(i)])
			#pesactual = request.COOKIES["pes_active"]
	return HttpResponseRedirect('/inicio/')

def encontrar_wid(request,indwid):
	found=0
	contarIndice=indwid
	#Recorre hasta encontrar el valor de widget a agregar.
	while found==0:
		contarIndice=contarIndice+1
		es_none=request.COOKIES.get("w"+str(contarIndice), None)
		if es_none:
			return contarIndice

def mayor(lista):
	max=0
	for i in range(0,len(lista)):
		if (max<lista[i]):
			max=lista[i] 
	return max

def listar_valores(request,boxes):
	if "cantidadwid" in request.COOKIES:
		cant_wid = request.COOKIES["cantidadwid"]
		cantwid = string.atoi(cant_wid,10)		
		listar_wid=[]	
		contarIndice=0
		indexbox=0
		for k in range(1, cantwid+1):
			#Recorre hasta encontrar el valor de widget.
			indiceBuscado=encontrar_wid(request,contarIndice)
			contarIndice=indiceBuscado
			if ("w"+str(contarIndice)) == boxes[indexbox] and indexbox > len(boxes):
				indexbox=indexbox+1
			else:
				listar_wid.append(indiceBuscado)
		maxvalor=mayor(listar_wid)
	return maxvalor

def borrar_pes(request):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	idborrar = request.GET.get('idpestanha', '')
	if(is_auth):
		nuevorec = Pestanha.objects.get(id=idborrar)
		ultimapos = nuevorec.nro_orden
		nuevorec.delete()
		pes_max = Pestanha.objects.filter(usuario=user_id)
		if(pes_max):
			num_max = pes_max.count()
			for i in range(int(ultimapos), int(num_max)+1):
				idaux = Pestanha.objects.get(usuario=user_id, nro_orden=i+1)
				idaux.nro_orden = i
				idaux.save()
		else:
			num_max = 1
		
		idnuevopes = Pestanha.objects.filter(usuario=user_id).aggregate(Min('id'))
		nuevorec = Pestanha.objects.get(id=idnuevopes['id__min'])
		nuevorec.estado = 1
		nuevorec.save()
	else:
		Nuevalista = []
		Listatemas = []
		Nrolistatemas = []
		Nuevalistwidxpest=[]
		Nuevalistcantpest=[]
		Nuevalistcol=[]
		Nuevalistmodel=[]
		pestactiva=0
		idgoogle = -1
		idgoogleS = -1
		contgs = 0
		esidgoogle = 0
		cant_pes = request.COOKIES["nro_pes"]
		cpes = string.atoi(cant_pes,10)
		cpesaux=cpes
		
		#Elimina datos google search Pestanha
		if "idGS" in request.COOKIES:
			idgoogleS = int(request.COOKIES["idGS"])
		
		j=1
		for i in range(1, cpes+1):
			if (int(i) <> int(idborrar)):
				if "np"+str(i) in request.COOKIES:
					Nuevalista.append(request.COOKIES["np"+str(i)])
				if "widxpest"+str(i) in request.COOKIES:
					Nuevalistwidxpest.append(request.COOKIES["widxpest"+str(i)])
				if "cantxwidxpest"+str(i) in request.COOKIES:
					Nuevalistcantpest.append(request.COOKIES["cantxwidxpest"+str(i)])
				if "cantida_columna"+str(i) in request.COOKIES:
					Nuevalistcol.append(request.COOKIES["cantida_columna"+str(i)])
				if "modelo_columna"+str(i) in request.COOKIES:
					Nuevalistmodel.append(request.COOKIES["modelo_columna"+str(i)])
				if "t"+str(i) in request.COOKIES:
					Listatemas.append(request.COOKIES["t"+str(i)])
				if "nt"+str(i) in request.COOKIES:
					Nrolistatemas.append(request.COOKIES["nt"+str(i)])
				if idgoogleS == i:
					idgoogle = contgs
				contgs = contgs + 1	
		
		responsen = HttpResponseRedirect('/inicio/')		
						
		for i in range(1, cpes+1):	
			responsen.delete_cookie("np"+str(i))
			responsen.delete_cookie("t"+str(i))
			responsen.delete_cookie("nt"+str(i))
		cpesaux = cpes
		cpes = cpes - 1
			
		responsen.delete_cookie("idGS")
		
		if idgoogleS == int(idborrar):
			responsen.delete_cookie("valor_buscado")
			esidgoogle = 1	
		#-------------------------------------------
		j=1
		for i in range(0, cpes):
			if idgoogle == i and esidgoogle == 0:
				responsen.set_cookie("idGS", j, 365*24*60*60)
			responsen.set_cookie("np"+str(j), Nuevalista[i], 365*24*60*60)
			responsen.set_cookie("t"+str(j), Listatemas[i], 365*24*60*60)
			responsen.set_cookie("nt"+str(j), Nrolistatemas[i], 365*24*60*60)
			j = j + 1
		responsen.set_cookie("pes_active", 1, 365*24*60*60)
		responsen.set_cookie("nro_pes", cpes, 365*24*60*60)
		
		#Elimina los widget-cookies de la pestanha
		widxp=[]
		if "cantidadwid" in request.COOKIES:
			cant_wid = request.COOKIES["cantidadwid"]
			cantwid = string.atoi(cant_wid,10)	
		if "widxpest"+idborrar in request.COOKIES:
			wid_pest = request.COOKIES["widxpest"+idborrar]
		if "cantxwidxpest"+idborrar in request.COOKIES:
			cant_wid_pest = request.COOKIES["cantxwidxpest"+idborrar]
			cantxwidxpest = string.atoi(cant_wid_pest,10)
				
			for each in wid_pest.split('&'):
				widxp.append(each)
			
			for k in range(0, cantxwidxpest):
				responsen.delete_cookie(widxp[k])
			
			for k in range(1, cpesaux+1):
				widxpestborrar="widxpest"+str(k)
				cantxpestborrar="cantxwidxpest"+str(k)
				cantidad_colborrar="cantida_columna"+str(k)
				modeloborrar="modelo_columna"+str(k)
				responsen.delete_cookie(widxpestborrar)
				responsen.delete_cookie(cantxpestborrar)
				responsen.delete_cookie(cantidad_colborrar)
				responsen.delete_cookie(modeloborrar)
			j=1
			
			for k in range(0, len(Nuevalistwidxpest)):
				responsen.set_cookie("widxpest"+str(j), Nuevalistwidxpest[k], 365*24*60*60)
				responsen.set_cookie("cantxwidxpest"+str(j), Nuevalistcantpest[k], 365*24*60*60)
				responsen.set_cookie("cantida_columna"+str(j), Nuevalistcol[k], 365*24*60*60)
				responsen.set_cookie("modelo_columna"+str(j), Nuevalistmodel[k], 365*24*60*60)
				j = j + 1	
			
			cantwid=cantwid-cantxwidxpest
			responsen.delete_cookie("cantidadwid")
			responsen.set_cookie("cantidadwid", cantwid, 365*24*60*60)			
			
			valormax=listar_valores(request,widxp)
			responsen.delete_cookie("max_idwid")
			responsen.delete_cookie("max_boxwid")
			responsen.set_cookie("max_idwid", valormax, 365*24*60*60)
			responsen.set_cookie("max_boxwid", valormax, 365*24*60*60)
					
			#return render_to_response('webpage/inicio.html', {'prub': "w"+valorwid})
		return responsen
	return HttpResponseRedirect('/inicio/')
	
def gt(request, t_id):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	#si el usuario esta autenticado:
	if(is_auth):
		#pesvieja = Q(usuario__id__icontains=user_id) & Q(estado__icontains=1)
		#estadoviejo = Pestanha.objects.filter(pesvieja).distinct()
		estadoviejo = Pestanha.objects.get(usuario=user_id, estado=1)
		estadoviejo.estado = 0
		estadoviejo.save()
		nuevoestado = Pestanha.objects.get(usuario=user_id, id=t_id)
		nuevoestado.estado = 1
		#tem = nuevoestado.tema_id
		nuevoestado.save()
		#p = Tema.objects.get(id=tem)
		#clause =  Q(usuario__id__icontains=user_id)
		#items = Pestanha.objects.filter(clause).distinct()
		#b = Pestanha.objects.filter(usuario=user_id).count()
	else:
		response = HttpResponseRedirect('/inicio/')
		response.set_cookie("pes_active", int(t_id), 365*24*60*60)
		return response
	#Para evitar que se muestre "borrar pestanha" cuando solo hay 1 pestanha
	#if(b <= 1):
	#	b=0
	#return render_to_response('webpage/inicio.html', {'viejo': a, 'nuevo':b})
	return HttpResponseRedirect('/inicio/')
	#return render_to_response('webpage/inicio.html', {'cant_pes':b,'pes': items,'temaurl': p.url})
	



def set_cookie1(response, key, value, days_expire = 7):
	if days_expire is None:
		max_age = 365*24*60*60  #one year
	else:
		max_age = days_expire*24*60*60 
	expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
	response.set_cookie(key, value, max_age=max_age, expires=expires, domain=settings.SESSION_COOKIE_DOMAIN, secure=settings.SESSION_COOKIE_SECURE or None)
	return response	


def manejo_cookies(request):
	b = request.GET.get('cl', '')
	if (b):
		# Creamos un objeto HttpResponse...
		response = HttpResponseRedirect('/inicio/')
		response.set_cookie("color_favorito", b, 365*24*60*60)
		#response.set_cookie(response, 'color_favorito', 'jujule')
		return response
		#return HttpResponseRedirect('/inicio/')
		#return HttpResponse()
		# ... y creamos una cookie para la respuesta
	else:
		return HttpResponseRedirect('/inicio/')
	return HttpResponseRedirect('/inicio/')


def cambiar_orden_u(request, t_id):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	if(is_auth):
		orden = Pestanha.objects.get(id=t_id)
		sig_val = orden.nro_orden
		if(sig_val > 1):
			sig_val = sig_val - 1
			sig_orden = Pestanha.objects.get(usuario=user_id, nro_orden=sig_val)
			orden.nro_orden = sig_val
			sig_orden.nro_orden = sig_val + 1
			orden.save()
			sig_orden.save()
	else:
		if "nro_pes" in request.COOKIES:
			#orden = request.COOKIES["np"+t_id]
			#n_orden = string.atoi(orden,10)
			if(t_id > 1):
				n_orden = int(t_id) - 1
				cant_pes = request.COOKIES["nro_pes"]
				pesa = request.COOKIES["pes_active"]
				pe = string.atoi(pesa,10)
				cpes = string.atoi(cant_pes,10)
				response = HttpResponseRedirect('/inicio/')
				for i in range(1, cpes+1):
					#aux = request.COOKIES["or_pes"+str(i)]
					if(str(i) == str(n_orden)):
						name_tab = request.COOKIES["np"+str(i)]
						name_tab1 = request.COOKIES["np"+str(n_orden+1)]
						response.set_cookie("np"+str(i), name_tab1, 365*24*60*60)
						response.set_cookie("np"+str(t_id), name_tab, 365*24*60*60)
						if(int(pe) == int(t_id)):
							response.set_cookie("pes_active", str(n_orden), 365*24*60*60)
						else:
							if(int(n_orden)>1):
								response.set_cookie("pes_active", str(n_orden-1), 365*24*60*60)
							
				return response
	return HttpResponseRedirect('/inicio/')
	
	
def cambiar_orden_d(request, t_id):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	#si el usuario esta autenticado:
	if(is_auth):
		orden = Pestanha.objects.get(id=t_id)
		sig_val = orden.nro_orden
		pes_max = Pestanha.objects.filter(usuario=user_id)
		num_max = pes_max.count()
		p_max = Pestanha.objects.filter(id=num_max)
		#sig_val = sig_val + 1
		sig_val1 = int(sig_val) + 1
		if(sig_val1 <= num_max):
			sig_orden = Pestanha.objects.get(usuario=user_id, nro_orden=sig_val1)
			orden.nro_orden = sig_val1
			sig_orden.nro_orden = sig_val1 - 1
			orden.save()
			sig_orden.save()
	else:
		if "nro_pes" in request.COOKIES:
			cant_pes = request.COOKIES["nro_pes"]
			cpes = string.atoi(cant_pes,10)
			pesa = request.COOKIES["pes_active"]
			pe = string.atoi(pesa,10)
			val = int(t_id) + 1
			if(int(val) <= int(cant_pes)):
				response = HttpResponseRedirect('/inicio/')
				for i in range(1, cpes+1):
					if(str(i) == str(val)):
						name_tab = request.COOKIES["np"+str(i)]
						name_tab1 = request.COOKIES["np"+str(val-1)]
						response.set_cookie("np"+str(i), name_tab1, 365*24*60*60)
						response.set_cookie("np"+str(t_id), name_tab, 365*24*60*60)
						if(int(pe) == int(t_id)):
							response.set_cookie("pes_active", str(val), 365*24*60*60)
						
				return response
	return HttpResponseRedirect('/inicio/')
